home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / xmail_overflow.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  131 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(10559);
  10.  script_bugtraq_id(1652);
  11.  script_version ("$Revision: 1.13 $");
  12.  script_cve_id("CAN-2000-0841");
  13.  name["english"] = "XMail APOP Overflow";
  14.  name["francais"] = "DΘpassement de buffer APOP dans XMail";
  15.  script_name(english:name["english"], francais:name["francais"]);
  16.  
  17.  desc["english"] = "The remote POP3 server seems
  18. to be subject to a buffer overflow when it receives
  19. two arguments which are too long for the APOP command.
  20.  
  21. This problem may allow an attacker to disable this
  22. POP server or to execute arbitrary code on this
  23. host.
  24.  
  25. Solution : Contact your vendor for a patch
  26. Risk factor : High";
  27.  
  28.  
  29.  desc["francais"] = "
  30. Le serveur POP3 distant semble etre vulnΘrable α un problΦme
  31. de dΘpassement de buffer lorsqu'il recoit deux arguments trop longs
  32. α la commande APOP.
  33.  
  34. Ce problΦmez peut permettre α un pirate d'executer du code
  35. arbitraire sur ce serveur ou bien de dΘsactiver le serveur POP
  36. α distance.
  37.  
  38. Solution : Contactez votre vendeur pour un patch
  39. Facteur de risque : ElevΘ";
  40.  
  41.  script_description(english:desc["english"], francais:desc["francais"]);
  42.  
  43.  summary["english"] = "Attempts to overflow the APOP command";
  44.  summary["francais"] = "Essaye de trop remplir les buffers de la commande APOP";
  45.  script_summary(english:summary["english"], francais:summary["francais"]);
  46.  
  47.  script_category(ACT_MIXED_ATTACK); # mixed
  48.  
  49.  
  50.  script_copyright(english:"This script is Copyright (C) 2000 Renaud Deraison",
  51.         francais:"Ce script est Copyright (C) 2000 Renaud Deraison");
  52.  family["english"] = "Gain root remotely";
  53.  family["francais"] = "Passer root α distance";
  54.  script_family(english:family["english"], francais:family["francais"]);
  55.  script_dependencie("find_service.nes", "qpopper.nasl");
  56.  script_exclude_keys("pop3/false_pop3");
  57.  script_require_ports("Services/pop3", 110);
  58.  exit(0);
  59. }
  60.  
  61. #
  62. # The script code starts here
  63. #
  64.  
  65. fake = get_kb_item("pop3/false_pop3");
  66. if(fake)exit(0);
  67. port = get_kb_item("Services/pop3");
  68. if(!port)port = 110;
  69.  
  70. if(safe_checks())
  71. {
  72.  banner = get_kb_item(string("pop3/banner/", port));
  73.  if(!banner)
  74.  {
  75.   soc = open_sock_tcp(port);
  76.   if(!soc)exit(0); 
  77.   banner = recv_line(socket:soc, length:4096);
  78.  }
  79.  
  80.  if(!banner)exit(0);
  81.  
  82.  if(ereg(pattern:".*[xX]mail.*", string:banner))
  83.  {
  84.   if(ereg(pattern:"[^0-9]*0\.(([0-4][0-9])|(5[0-8]))[^0-9]*.*"))
  85.    {
  86.     desc = "
  87. The remote server is XMail, prior to version 0.59.
  88. This version is vulnerable to a buffer overflow in
  89. the APOP command which allows anyone to execute
  90. arbitrary commands on this system.
  91.  
  92. *** Nessus reports this vulnerability using only
  93. *** information that was gathered. Use caution
  94. *** when testing without safe checks enabled.
  95.  
  96. Solution : Contact your vendor for a patch
  97. Risk factor : High";
  98.  
  99.     security_hole(port:port, data:desc);
  100.    }
  101.  }
  102.  exit(0);
  103. }
  104.  
  105.  
  106. if(get_port_state(port))
  107. {
  108.  soc = open_sock_tcp(port);
  109.  if(soc)
  110.  {
  111.   d = recv_line(socket:soc, length:1024);
  112.   if(!d){close(soc);exit(0);}
  113.   c = string("APOP ", crap(2048), " ", crap(2048), "\r\n");
  114.   send(socket:soc, data:c);
  115.   r = recv_line(socket:soc, length:1024);
  116.   if(!r){
  117.       security_hole(port);
  118.       exit(0);
  119.     }
  120.   close(soc);
  121.   soc = open_sock_tcp(port);
  122.   if(!soc)security_hole(port);
  123.   else {
  124.        r = recv_line(socket:soc, length:1024);
  125.     if(!r)security_hole(port);
  126.     close(soc);
  127.     }
  128.  
  129.  }
  130. }
  131.